package com.kuang.controller;

import com.kuang.pojo.User;
import com.kuang.service.UserService;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;

import javax.annotation.Resource;
import java.util.List;

@Controller
@RequestMapping("/user")
public class UserController {

    @Resource
    private UserService userService;


    //查询用户
    @RequestMapping("/allUser")
    public String list(Model model){
        List<User> users = userService.queryAllUser();
        model.addAttribute("list",users);
        return "/allUser";
    }

    //添加用户
    @RequestMapping("/toAddUser")
    public String toAddUser() {
        return "/addUser.jsp";
    }

    @RequestMapping("/addUser")
    public String addUser(User user) {
        System.out.println(user);
        userService.addUser(user);
        return "redirect:/user/allUser";
    }

    //修改用户
    @RequestMapping("/toUpdateUser")
    public String toUpdateUser(Model model, int id) {
        User user = userService.queryUserById(id);
        System.out.println(user);
        model.addAttribute("User",user );
        return "/updateUser";
    }

    @RequestMapping("/updateUser")
    public String updateUser(Model model, User user) {
        System.out.println(user);
        userService.updateUser(user);
        user = userService.queryUserById(user.getId());
        model.addAttribute("User", user);
        return "redirect:/user/allUser";
    }

    /*删除用户（通过Id进行删除）
      遇到的问题：怎样把id传过去
      分析/解决：
          用户在页面中点击删除按钮，提交请求被springmvc
          的前端控制器DispatcherServlet拦截找到指定映射位置
          对请求进行处理（这里就是删除操作）
      怎样获取id：
          因为我写的删除功能
          需要有id依赖，所以在jsp页面中删除那一项我使用el表达式来获取id，
          此时id是附在请求中的
      怎样把id传入：
           本人因为JavaWeb知识有所欠缺，想法有限
           1.首先想到使用原始servlet方法，通过request.getParameter("..")，有些麻烦
           2.使用@RequestParam(".."),可能会出现乱码
           3.使用@PathVariable注解（之前狂神有讲过，结果我给忘了。于是疯狂查CSDN）
             @PathVariable：该注解是spring3.0的一个新功能，可以接收请求路径中占位符的值
          */
    @RequestMapping("/del/{UserId}")
    //@PathVariable：该注解是spring3.0的一个新功能，可以接收请求路径中占位符的值
    public String deleteUser(@PathVariable("UserId") int id) {
        userService.deleteUser(id);
        return "redirect:/user/allUser";
    }
}
